-- *****************************************************************
-- CISCO-NTP-MIB.my:  NTP MIB
--   
-- February 2000, Vinod B C
--   
-- Copyright (c) 2000, 2002-2003, 2006 by cisco Systems, Inc.
-- All rights reserved.
--   
-- *****************************************************************

CISCO-NTP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    Integer32,
    IpAddress,
    Gauge32,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP,
    NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION,
    TruthValue,
    RowStatus
        FROM SNMPv2-TC
    InetAddress,
    InetAddressType
        FROM INET-ADDRESS-MIB
    ciscoMgmt
        FROM CISCO-SMI;


ciscoNtpMIB MODULE-IDENTITY
    LAST-UPDATED    "200607310000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal: 170 W. Tasman Drive
            San Jose, CA 95134
            USA

            Tel: +1 800 553-NETS

            E-mail: cs-snmp@cisco.com"
    DESCRIPTION
            "This MIB module defines a MIB which provides
            mechanisms to monitor an NTP server.

            The MIB is derived from the Technical Report
            #Management of the NTP with SNMP# TR No. 98-09
            authored by A.S. Sethi and Dave Mills in the
            University of Delaware.

            Below is a brief overview of NTP system architecture
            and implementation model. This will help understand
            the objects defined below and their relationships.

            NTP Intro:
            The Network Time Protocol (NTP) Version 3, is used to
            synchronize timekeeping among a set of distributed
            time servers and clients.  The service model is based
            on a returnable-time design which depends only on
            measured clock offsets, but does not require reliable
            message delivery.  The synchronization subnet uses a
            self-organizing, hierarchical master-slave
            configuration, with synchronization paths determined
            by a minimum-weight spanning tree.  While multiple
            masters (primary servers) may exist, there is no
            requirement for an election protocol.

            System Archiecture:
            In the NTP model a number of primary reference
            sources, synchronized by wire or radio to national
            standards, are connected to widely accessible
            resources, such as backbone gateways, and operated as
            primary time servers.  The purpose of NTP is to convey
            timekeeping information from these servers to other
            time servers via the Internet and also to cross-check
            clocks and mitigate errors due to equipment or
            propagation failures.  Some number of local-net hosts
            or gateways, acting as secondary time servers, run NTP
            with one or more of the primary servers.  In order to
            reduce the protocol overhead, the secondary servers
            distribute time via NTP to the remaining local-net
            hosts.  In the interest of reliability, selected hosts
            can be equipped with less accurate but less expensive
            radio clocks and used for backup in case of failure of
            the primary and/or secondary servers or communication
            paths between them.

            NTP is designed to produce three products: clock
            offset, round-trip delay and dispersion, all of which
            are relative to a selected reference clock.  Clock
            offset represents the amount to adjust the local clock
            to bring it into correspondence with the reference
            clock.  Roundtrip delay provides the capability to
            launch a message to arrive at the reference clock at a
            specified time.  Dispersion represents the maximum
            error of the local clock relative to the reference
            clock.  Since most host time servers will synchronize
            via another peer time server, there are two components
            in each of these three products, those determined by
            the peer relative to the primary reference source of
            standard time and those measured by the host relative
            to the peer.  Each of these components are maintained
            separately in the protocol in order to facilitate
            error control and management of the subnet itself.  
            They provide not only precision measurements of offset
            and delay, but also definitive maximum error bounds,
            so that the user interface can determine not only the
            time, but the quality of the time as well.

            Implementation Model:
            In what may be the most common client/server model a
            client sends an NTP message to one or more servers and
            processes the replies as received.  The server
            interchanges addresses and ports, overwrites certain
            fields in the message, recalculates the checksum and
            returns the message immediately.  Information included
            in the NTP message allows the client to determine the
            server time with respect to local time and adjust the
            local clock accordingly.  In addition, the message
            includes information to calculate the expected
            timekeeping accuracy and reliability, as well as
            select the best from possibly several servers.

            While the client/server model may suffice for use on
            local nets involving a public server and perhaps many
            workstation clients, the full generality of NTP
            requires distributed participation of a number of
            client/servers or peers arranged in a dynamically
            reconfigurable, hierarchically distributed
            configuration.  It also requires sophisticated
            algorithms for association management, data
            manipulation and local-clock control.

            Glossary:
            1. Host: Refers to an instantiation of the NTP
                    protocol on a local processor.
            2. Peer: Refers to an instantiation of the NTP
                    protocol on a remote processor connected by
                    a network path from the local host."
    REVISION        "200607310000Z"
    DESCRIPTION
            "Added ciscoNtpSysExtGroup and ciscoNtpSrvNotifGroup groups
             to support monitoring of NTP server status.
             ciscoNtpMIBComplianceRev3 is deprecated and replaced
             by ciscoNtpMIBComplianceRev4."
    REVISION        "200407230000Z"
    DESCRIPTION
            "Added cntpPeersPeerName and cntpPeersPeerType
            objects to cntpPeerVarTable."
    REVISION        "200307290000Z"
    DESCRIPTION
            "Added cntpPeersPrefPeer object to
            cntpPeersVarTable."
    REVISION        "200307070000Z"
    DESCRIPTION
            "ciscoNtpPeersGroup is deprecated by
            ciscoNtpPeersGroupRev1.
            ciscoNtpMIBCompliance is deprecated by
            ciscoNtpMIBComplianceRev1."
    REVISION        "200202200000Z"
    DESCRIPTION
            "cntpPeersUpdateTime is deprecated by
            cntpPeersUpdateTimeRev1."
    REVISION        "200006160000Z"
    DESCRIPTION
            "Initial version of this MIB module."
          ::= { ciscoMgmt 168 }


-- The various groups defined within this MIB definition:
ciscoNtpMIBNotifs       OBJECT IDENTIFIER ::= { ciscoNtpMIB 0 }
ciscoNtpMIBObjects      OBJECT IDENTIFIER ::= { ciscoNtpMIB 1 }
ciscoNtpMIBConformance  OBJECT IDENTIFIER ::= { ciscoNtpMIB 2 }

cntpSystem  OBJECT IDENTIFIER
    ::= { ciscoNtpMIBObjects 1 }

cntpPeers  OBJECT IDENTIFIER
    ::= { ciscoNtpMIBObjects 2 }

cntpFilter  OBJECT IDENTIFIER
    ::= { ciscoNtpMIBObjects 3 }

-- Textual Conventions

NTPTimeStamp ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "NTP timestamps are represented as a 64-bit
            unsigned fixed-point number, in seconds relative to
            00:00 on 1 January 1900.  The integer part is in the
            first 32 bits and the fraction part is in the last
            32 bits."

    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.1"
    SYNTAX          OCTET STRING (SIZE (8))

NTPLeapIndicator ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "This is a two-bit code warning of an impending leap
            second to be inserted in the NTP timescale.  The bits
            are set before 23:59 on the day of insertion and reset
            after 00:00 on the following day.  This causes the
            number of seconds (rollover interval) in the day of
            insertion to be increased or decreased by one.  The two
            bits are coded as below,
            00, no warning
            01, last minute has 61 seconds
            10, last minute has 59 seconds
            11, alarm condition (clock not synchronized)"

    REFERENCE
            "D.L. Mills, 'Network Time Protocol(Version 3)',
                RFC-1305, March 1992, Section 3.2.1"
    SYNTAX          INTEGER  {
                        noWarning(0),
                        addSecond(1),
                        subtractSecond(2),
                        alarm(3)
                    }

NTPSignedTimeValue ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "The time in seconds that could represent signed
            quantities like time delay with respect to some
            source.  This textual-convention is specific to Cisco
            implementation of NTP where 32-bit integers are used
            for such quantities.  The signed integer part is in
            the first 16 bits and the fraction part is in the
            last 16 bits."

    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Sections 2,  3.2.1"
    SYNTAX          OCTET STRING (SIZE (4))

NTPUnsignedTimeValue ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "The time in seconds that could represent unsigned
            quantities like maximum error of the local clock
            with respect to some source.  This textual-convention
            is specific to Cisco implementation of NTP where
            32-bit integers are used for such quantities.  The
            unsigned integer part is in the first 16 bits and the
            fraction part is in the last 16 bits."

    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Sections 2, 3.2.1"
    SYNTAX          OCTET STRING (SIZE (4))

NTPStratum ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "Indicates the stratum of the clock.  The stratum
            defines the accuracy of a time server.  Higher the
            stratum, lower the accuracy.
            0, unspecified
            1, primary reference (e.g., calibrated atomic clock,
               radio clock)
            2-255, secondary reference (via NTP)"

    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 2.2"
    SYNTAX          Integer32 (0..255 )

NTPRefId ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "The reference clock identifier.  In the case of
            stratum 0 (unspecified) or stratum 1 (primary
            reference source), this is a four-octet,
            left-justified, zero-padded ASCII string as defined
            in RFC-1305.  In the case of stratum 2 and greater
            (secondary reference) this is the four-octet Internet
            address of the peer selected for synchronization.

            Some examples of stratum 0 identifiers are,
            DCN, DCN routing protocol
            NIST, NIST public modem
            TSP, TSP time protocol
            DTS, Digital Time Service

            Some examples of stratum 1 identifiers are,
            ATOM, Atomic clock (calibrated)
            VLF, VLF radio (OMEGA,, etc.)
            LORC, LORAN-C radionavigation
            GOES, GOES UHF environment satellite
            GPS, GPS UHF satellite positioning"

    REFERENCE
            "D.L. Mills, Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.1"
    SYNTAX          OCTET STRING (SIZE (4))

NTPPollInterval ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "The minimum interval between transmitted NTP
            messages, in seconds as a power of two.  For
            instance, a value of six indicates a minimum
            interval of 64 seconds."
    SYNTAX          Integer32 (-20..20 )

NTPAssocIdentifier ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
            "The association identifier of the peer.  Every peer
            with which an NTP server is associated with is
            identified by an association identifier."
    SYNTAX          Integer32 (0..2147483647 )

-- System Group
cntpSysLeap OBJECT-TYPE
    SYNTAX          NTPLeapIndicator
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
            "Two-bit code warning of an impending leap second to
            be inserted in the NTP timescale. This object can be
            set only when the cntpSysStratum has a value of 1." 
    ::= { cntpSystem 1 }

cntpSysStratum OBJECT-TYPE
    SYNTAX          NTPStratum
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
            "The stratum of the local clock. If the value is set
            to 1, i.e., this is a primary reference, then the
            Primary-Clock procedure described in Section 3.4.6,
            in RFC-1305 is invoked." 
    ::= { cntpSystem 2 }

cntpSysPrecision OBJECT-TYPE
    SYNTAX          Integer32 (-20..20 )
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "Signed integer indicating the precision
            of the system clock, in seconds to the nearest
            power of two.  The value must be rounded to the
            next larger power of two; for instance, a 50-Hz
            (20 ms) or 60-Hz (16.67 ms) power-frequency clock
            would be assigned the value -5 (31.25 ms), while a
            1000-Hz (1 ms) crystal-controlled clock would be
            assigned the value -9 (1.95 ms)." 
    ::= { cntpSystem 3 }

cntpSysRootDelay OBJECT-TYPE
    SYNTAX          NTPSignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "A signed fixed-point number indicating the total
            round-trip delay in seconds, to the primary reference
            source at the root of the synchronization subnet."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Sections 2.2, 3.2.1" 
    ::= { cntpSystem 4 }

cntpSysRootDispersion OBJECT-TYPE
    SYNTAX          NTPUnsignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The maximum error in seconds, relative to the
            primary reference source at the root of the
            synchronization subnet.  Only positive values greater
            than zero are possible."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Sections 2, 2.2, 3.2.1" 
    ::= { cntpSystem 5 }

cntpSysRefId OBJECT-TYPE
    SYNTAX          NTPRefId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION     "The reference identifier of the local clock." 
    ::= { cntpSystem 6 }

cntpSysRefTime OBJECT-TYPE
    SYNTAX          NTPTimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The local time when the local clock was last
            updated.  If the local clock has never been
            synchronized, the value is zero." 
    ::= { cntpSystem 7 }

cntpSysPoll OBJECT-TYPE
    SYNTAX          NTPPollInterval
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The interval at which the NTP server polls other NTP
            servers to synchronize its clock." 
    ::= { cntpSystem 8 }

cntpSysPeer OBJECT-TYPE
    SYNTAX          NTPAssocIdentifier
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The current synchronization source.  This will
            contain the unique association identifier
            cntpPeersAssocId of the corresponding peer entry in
            the cntpPeersVarTable of the peer acting as the
            synchronization source.  If there is no peer, the
            value will be 0." 
    ::= { cntpSystem 9 }

cntpSysClock OBJECT-TYPE
    SYNTAX          NTPTimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The current local time.  Local time is derived from
            the hardware clock of the particular machine and
            increments at intervals depending on the design used." 
    ::= { cntpSystem 10 }

cntpSysSrvStatus OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(1),
                        notRunning(2),
                        notSynchronized(3),
                        syncToLocal(4),
                        syncToRefclock(5),
                        syncToRemoteServer(6)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "Current state of the NTP server with values coded as follows:
            1: server status is unknown
            2: server is not running
            3: server is not synchronized to any time source
            4: server is synchronized to its own local clock
            5: server is synchronized to a local hardware refclock (e.g. GPS)
            6: server is synchronized to a remote NTP server"
    DEFVAL          { unknown } 
    ::= { cntpSystem 11 }
-- Peers Group
--   

--   
-- Peer Variables Table

cntpPeersVarTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CntpPeersVarEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
            "This table provides information on the peers with
            which the local NTP server has associations.  The
            peers are also NTP servers but running on different
            hosts."
    ::= { cntpPeers 1 }

cntpPeersVarEntry OBJECT-TYPE
    SYNTAX          CntpPeersVarEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
            "Each peers' entry provides NTP information retrieved
            from a particular peer NTP server.  Each peer is
            identified by a unique association identifier.

            Entries are automatically created when the user
            configures the NTP server to be associated with remote
            peers.  Similarly entries are deleted when the user
            removes the peer association from the NTP server.

            Entries can also be created by the management station
            by setting values for the following objects:
            cntpPeersPeerAddress or cntpPeersPeerName, 
            cntpPeersHostAddress and
            cntpPeersMode and making the cntpPeersEntryStatus as
            active(1).  At the least, the management station has
            to set a value for cntpPeersPeerAddress or
            cntpPeersPeerName to make the row active."
    INDEX           { cntpPeersAssocId } 
    ::= { cntpPeersVarTable 1 }

CntpPeersVarEntry ::= SEQUENCE {
        cntpPeersAssocId            NTPAssocIdentifier,
        cntpPeersConfigured         TruthValue,
        cntpPeersPeerAddress        IpAddress,
        cntpPeersPeerPort           Integer32,
        cntpPeersHostAddress        IpAddress,
        cntpPeersHostPort           Integer32,
        cntpPeersLeap               NTPLeapIndicator,
        cntpPeersMode               INTEGER ,
        cntpPeersStratum            NTPStratum,
        cntpPeersPeerPoll           NTPPollInterval,
        cntpPeersHostPoll           NTPPollInterval,
        cntpPeersPrecision          Integer32,
        cntpPeersRootDelay          NTPSignedTimeValue,
        cntpPeersRootDispersion     NTPUnsignedTimeValue,
        cntpPeersRefId              NTPRefId,
        cntpPeersRefTime            NTPTimeStamp,
        cntpPeersOrgTime            NTPTimeStamp,
        cntpPeersReceiveTime        NTPTimeStamp,
        cntpPeersTransmitTime       NTPTimeStamp,
        cntpPeersUpdateTime         Integer32,
        cntpPeersReach              Integer32,
        cntpPeersTimer              Integer32,
        cntpPeersOffset             NTPSignedTimeValue,
        cntpPeersDelay              NTPSignedTimeValue,
        cntpPeersDispersion         NTPUnsignedTimeValue,
        cntpPeersFilterValidEntries Gauge32,
        cntpPeersEntryStatus        RowStatus,
        cntpPeersUpdateTimeRev1     Unsigned32,
        cntpPeersPrefPeer           TruthValue,
        cntpPeersPeerType           InetAddressType,
        cntpPeersPeerName           InetAddress
}

cntpPeersAssocId OBJECT-TYPE
    SYNTAX          NTPAssocIdentifier
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
            "An integer value greater than 0 that uniquely
            identifies a peer with which the local NTP server
            is associated." 
    ::= { cntpPeersVarEntry 1 }

cntpPeersConfigured OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "This is a bit indicating that the association
            was created from configuration information and
            should not be de-associated even if the peer
            becomes unreachable." 
    ::= { cntpPeersVarEntry 2 }

cntpPeersPeerAddress OBJECT-TYPE
    SYNTAX          IpAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "The IP address of the peer.  When creating a new
            association, a value should be set either for this
            object or the corresponding instance of 
            cntpPeersPeerName, before the row is made active." 
    ::= { cntpPeersVarEntry 3 }

cntpPeersPeerPort OBJECT-TYPE
    SYNTAX          Integer32 (1..65535 )
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The UDP port number on which the peer receives NTP
            messages." 
    ::= { cntpPeersVarEntry 4 }

cntpPeersHostAddress OBJECT-TYPE
    SYNTAX          IpAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "The IP address of the local host.  Multi-homing can
            be supported using this object." 
    ::= { cntpPeersVarEntry 5 }

cntpPeersHostPort OBJECT-TYPE
    SYNTAX          Integer32 (1..65535 )
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The UDP port number on which the local host receives
            NTP messages." 
    ::= { cntpPeersVarEntry 6 }

cntpPeersLeap OBJECT-TYPE
    SYNTAX          NTPLeapIndicator
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "Two-bit code warning of an impending leap
            second to be inserted in the NTP timescale of
            the peer." 
    ::= { cntpPeersVarEntry 7 }

cntpPeersMode OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unspecified(0),
                        symmetricActive(1),
                        symmetricPassive(2),
                        client(3),
                        server(4),
                        broadcast(5),
                        reservedControl(6),
                        reservedPrivate(7)
                    }
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "The association mode of the NTP server, with values
            coded as follows,
            0, unspecified
            1, symmetric active - A host operating in this mode
                    sends periodic messages regardless of the
                    reachability state or stratum of its peer.  By
                    operating in this mode the host announces its
                    willingness to synchronize and be synchronized
                    by the peer
            2, symmetric passive - This type of association is
                    ordinarily created upon arrival of a message
                    from a peer operating in the symmetric active
                    mode and persists only as long as the peer is
                    reachable and operating at a stratum level
                    less than or equal to the host; otherwise, the
                    association is dissolved.  However, the
                    association will always persist until at least
                    one message has been sent in reply.  By
                    operating in this mode the host announces its
                    willingness to synchronize and be synchronized
                    by the peer
            3, client -  A host operating in this mode sends
                    periodic messages regardless of the
                    reachability state or stratum of its peer.  By
                    operating in this mode the host, usually a LAN
                    workstation, announces its willingness to be
                    synchronized by, but not to synchronize the peer
            4, server - This type of association is ordinarily
                    created upon arrival of a client request message
                    and exists only in order to reply to that
                    request, after which the association is
                    dissolved.  By operating in this mode the host,
                    usually a LAN time server, announces its
                    willingness to synchronize, but not to be
                    synchronized by the peer
            5, broadcast - A host operating in this mode sends
                    periodic messages regardless of the
                    reachability state or stratum of the peers.
                    By operating in this mode the host, usually a
                    LAN time server operating on a high-speed
                    broadcast medium, announces its willingness to
                    synchronize all of the peers, but not to be
                    synchronized by any of them
            6, reserved for NTP control messages
            7, reserved for private use.

            When creating a new peer association, if no value
            is specified for this object, it defaults to
            symmetricActive(1)."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.3" 
    ::= { cntpPeersVarEntry 8 }

cntpPeersStratum OBJECT-TYPE
    SYNTAX          NTPStratum
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION     "The stratum of the peer clock." 
    ::= { cntpPeersVarEntry 9 }

cntpPeersPeerPoll OBJECT-TYPE
    SYNTAX          NTPPollInterval
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The interval at which the peer polls the local host." 
    ::= { cntpPeersVarEntry 10 }

cntpPeersHostPoll OBJECT-TYPE
    SYNTAX          NTPPollInterval
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The interval at which the local host polls the peer." 
    ::= { cntpPeersVarEntry 11 }

cntpPeersPrecision OBJECT-TYPE
    SYNTAX          Integer32 (-20..20 )
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "Signed integer indicating the precision of the peer
            clock, in seconds to the nearest power of two.  The
            value must be rounded to the next larger power of
            two; for instance, a 50-Hz (20 ms) or 60-Hz
            (16.67 ms) power-frequency clock would be assigned
            the value -5 (31.25 ms), while a 1000-Hz (1 ms)
            crystal-controlled clock would be assigned the value
            -9 (1.95 ms)." 
    ::= { cntpPeersVarEntry 12 }

cntpPeersRootDelay OBJECT-TYPE
    SYNTAX          NTPSignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "A signed fixed-point number indicating the total
            round-trip delay in seconds, from the peer to the
            primary reference source at the root of the
            synchronization subnet." 
    ::= { cntpPeersVarEntry 13 }

cntpPeersRootDispersion OBJECT-TYPE
    SYNTAX          NTPUnsignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The maximum error in seconds, of the peer clock
            relative to the primary reference source at the root
            of the synchronization subnet.  Only positive values
            greater than zero are possible." 
    ::= { cntpPeersVarEntry 14 }

cntpPeersRefId OBJECT-TYPE
    SYNTAX          NTPRefId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION     "The reference identifier of the peer." 
    ::= { cntpPeersVarEntry 15 }

cntpPeersRefTime OBJECT-TYPE
    SYNTAX          NTPTimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The local time at the peer when its clock was last
            updated.  If the peer clock has never been
            synchronized, the value is zero." 
    ::= { cntpPeersVarEntry 16 }

cntpPeersOrgTime OBJECT-TYPE
    SYNTAX          NTPTimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The local time at the peer, when its latest
            NTP message was sent.  If the peer becomes unreachable
            the value is set to zero." 
    ::= { cntpPeersVarEntry 17 }

cntpPeersReceiveTime OBJECT-TYPE
    SYNTAX          NTPTimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The local time, when the latest NTP message from
            the peer arrived.  If the peer becomes unreachable
            the value is set to zero." 
    ::= { cntpPeersVarEntry 18 }

cntpPeersTransmitTime OBJECT-TYPE
    SYNTAX          NTPTimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The local time at which the NTP message departed the
            sender." 
    ::= { cntpPeersVarEntry 19 }

cntpPeersUpdateTime OBJECT-TYPE
    SYNTAX          Integer32 (0..2147483647 )
    MAX-ACCESS      read-only
    STATUS          deprecated
    DESCRIPTION
            "The local time, when the most recent NTP message was
            received from the peer that was used to calculate the
            skew dispersion.  This represents only the 32-bit
            integer part of the NTPTimestamp." 
    ::= { cntpPeersVarEntry 20 }

cntpPeersReach OBJECT-TYPE
    SYNTAX          Integer32 (0..255 )
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "A shift register of used to determine the
            reachability status of the peer, with bits entering
            from the least significant (rightmost) end.  A peer is
            considered reachable if at least one bit in this
            register is set to one i.e, if the value of this
            object is non-zero.
            The data in the shift register would be populated by
            the NTP protocol procedures."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.3" 
    ::= { cntpPeersVarEntry 21 }

cntpPeersTimer OBJECT-TYPE
    SYNTAX          Integer32 (0..2147483647 )
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The interval in seconds, between transmitted NTP
            messages from the local host to the peer."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.3" 
    ::= { cntpPeersVarEntry 22 }

cntpPeersOffset OBJECT-TYPE
    SYNTAX          NTPSignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The estimated offset of the peer clock relative to
            the local clock, in seconds.  The host determines the
            value of this object using the NTP clock-filter
            algorithm."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.5" 
    ::= { cntpPeersVarEntry 23 }

cntpPeersDelay OBJECT-TYPE
    SYNTAX          NTPSignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The estimated round-trip delay of the peer clock
            relative to the local clock over the network path
            between them, in seconds.  The host determines the
            value of this object using the NTP clock-filter
            algorithm."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.5" 
    ::= { cntpPeersVarEntry 24 }

cntpPeersDispersion OBJECT-TYPE
    SYNTAX          NTPUnsignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The estimated maximum error of the peer clock
            relative to the local clock over the network path
            between them, in seconds.  The host determines the
            value of this object using the NTP clock-filter
            algorithm."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.5" 
    ::= { cntpPeersVarEntry 25 }

cntpPeersFilterValidEntries OBJECT-TYPE
    SYNTAX          Gauge32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The number of valid entries for a peer in the
            Filter Register Table. Since, the Filter Register
            Table is optional, this object will have a value 0
            if the Filter Register Table is not implemented." 
    ::= { cntpPeersVarEntry 26 }

cntpPeersEntryStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "The status object for this row. When a management
            station is creating a new row, it should set the
            value for cntpPeersPeerAddress at least, before the
            row can be made active(1)." 
    ::= { cntpPeersVarEntry 27 }

cntpPeersUpdateTimeRev1 OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The local time, when the most recent NTP message was
            received from the peer that was used to calculate the
            skew dispersion.  This represents only the 32-bit
            integer part of the NTPTimestamp." 
    ::= { cntpPeersVarEntry 28 }

cntpPeersPrefPeer OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "This object specifies whether this peer is the
            preferred one over the others. By default, when
            the value of this object is 'false', NTP chooses 
            the peer with which to synchronize the time on 
            the local system. If this object is set
            to 'true', NTP will choose the corresponding
            peer to synchronize the time with. If multiple
            entries have this object set to 'true', NTP will
            choose the first one to be set. This object is
            a means to override the selection of the peer by
            NTP."
    DEFVAL          { false } 
    ::= { cntpPeersVarEntry 29 }

cntpPeersPeerType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "Represents the type of the corresponding instance
            of cntpPeersPeerName object."
    DEFVAL          { ipv4 } 
    ::= { cntpPeersVarEntry 30 }

cntpPeersPeerName OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
            "The address of the peer. When creating a new
            association, a value must be set for either this
            object or the corresponding instance of
            cntpPeersPeerAddress object, before the row
            is made active." 
    ::= { cntpPeersVarEntry 31 }
 

-- Filter Group
--   
-- Implementation of this group is optional.  It must be implemented
-- when the filter and selection algorithms described in Section 4
-- of RFC 1305 are used.
--   

--   
-- Filter Register Table

cntpFilterRegisterTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CntpFilterRegisterEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
            "The following table contains NTP state variables
            used by the NTP clock filter and selection algorithms.
            This table depicts a shift register.  Each stage in
            the shift register is a 3-tuple consisting of the
            measured clock offset, measured clock delay and
            measured clock dispersion associated with a single
            observation.

            An important factor affecting the accuracy and
            reliability of time distribution is the complex of
            algorithms used to reduce the effect of statistical
            errors and falsetickers due to failure of various
            subnet components, reference sources or propagation
            media.  The NTP clock-filter and selection algorithms
            are designed to do exactly this.  The objects in the
            filter register table below are used by these
            algorthims to minimize the error in the calculated
            time."
    REFERENCE
            "D.L. Mills, 'Network Time Protocol (Version 3)',
                RFC-1305, March 1992, Section 3.2.5"
    ::= { cntpFilter 2 }

cntpFilterRegisterEntry OBJECT-TYPE
    SYNTAX          CntpFilterRegisterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
            "Each entry corresponds to one stage of the shift
            register, i.e., one reading of the variables clock
            delay, clock offset and clock dispersion.

            Entries are automatically created whenever a peer is
            configured and deleted when the peer is removed."
    INDEX           {
                        cntpPeersAssocId,
                        cntpFilterIndex
                    } 
    ::= { cntpFilterRegisterTable 1 }

CntpFilterRegisterEntry ::= SEQUENCE {
        cntpFilterIndex           Integer32,
        cntpFilterPeersOffset     NTPSignedTimeValue,
        cntpFilterPeersDelay      NTPSignedTimeValue,
        cntpFilterPeersDispersion NTPUnsignedTimeValue
}

cntpFilterIndex OBJECT-TYPE
    SYNTAX          Integer32 (1..8 )
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
            "An integer value in the specified range that is used
            to index into the table.  The size of the table is
            fixed at 8.  Each entry identifies a particular
            reading of the clock filter variables in the shift
            register.

            Entries are added starting at index 1.  The index
            wraps back to 1 when it reaches 8.  When the index
            wraps back, the new entries will overwrite the old
            entries effectively deleting the old entry." 
    ::= { cntpFilterRegisterEntry 1 }

cntpFilterPeersOffset OBJECT-TYPE
    SYNTAX          NTPSignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The offset of the peer clock relative to the
            local clock in seconds." 
    ::= { cntpFilterRegisterEntry 2 }

cntpFilterPeersDelay OBJECT-TYPE
    SYNTAX          NTPSignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "Round-trip delay of the peer clock relative to the
            local clock over the network path between them, in
            seconds.  This variable can take on both positive and
            negative values, depending on clock precision and
            skew-error accumulation." 
    ::= { cntpFilterRegisterEntry 3 }

cntpFilterPeersDispersion OBJECT-TYPE
    SYNTAX          NTPUnsignedTimeValue
    UNITS           "seconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
            "The maximum error of the peer clock relative to the
            local clock over the network path between them, in
            seconds.  Only positive values greater than zero are
            possible." 
    ::= { cntpFilterRegisterEntry 4 }
 

-- Notifications


ciscoNtpSrvStatusChange NOTIFICATION-TYPE
    OBJECTS         { cntpSysSrvStatus }
    STATUS          current
    DESCRIPTION
            "This notification is generated whenever the value of
            cntpSysSrvStatus changes."
   ::= { ciscoNtpMIBNotifs 1 }


ciscoNtpHighPriorityConnFailure NOTIFICATION-TYPE
    OBJECTS         { cntpPeersPeerAddress }
    STATUS          current
    DESCRIPTION
            "A failure to connect with an high priority NTP server
            (e.g. a server at the lowest stratum) is detected."
   ::= { ciscoNtpMIBNotifs 2 }


ciscoNtpHighPriorityConnRestore NOTIFICATION-TYPE
    OBJECTS         { cntpPeersPeerAddress }
    STATUS          current
    DESCRIPTION
            "A connection with an high priority NTP server
            (e.g. a server at the lowest stratum) is restored."
   ::= { ciscoNtpMIBNotifs 3 }


ciscoNtpGeneralConnFailure NOTIFICATION-TYPE
    STATUS          current
    DESCRIPTION
            "This trap is sent when the device loses connectivity 
            to all NTP servers."
   ::= { ciscoNtpMIBNotifs 4 }


ciscoNtpGeneralConnRestore NOTIFICATION-TYPE
    OBJECTS         { cntpPeersPeerAddress }
    STATUS          current
    DESCRIPTION
            "This trap is sent when the connection with at least 
            one NTP server has been restored
            (e.g. after a ciscoNtpGeneralConnFailure)."
   ::= { ciscoNtpMIBNotifs 5 }

-- Conformance
ciscoNtpMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoNtpMIBConformance 1 }

ciscoNtpMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoNtpMIBConformance 2 }

-- Compliance Statement
ciscoNtpMIBCompliance MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
            "The compliance statement for Cisco agents which
            implement the Cisco NTP MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoNtpSysGroup,
                        ciscoNtpPeersGroup
                    }

    GROUP           ciscoNtpFilterGroup
    DESCRIPTION
            "This group is required only if the
            clock-filer algorithms defined in RFC-1305,
            Section 4 are implemented by the agent."
    ::= { ciscoNtpMIBCompliances 1 }

ciscoNtpMIBComplianceRev1 MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
            "The compliance statement for Cisco agents which
            implement the Cisco NTP MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoNtpSysGroup,
                        ciscoNtpPeersGroupRev1
                    }

    GROUP           ciscoNtpFilterGroup
    DESCRIPTION
            "This group is required only if the
            clock-filer algorithms defined in RFC-1305,
            Section 4 are implemented by the agent."
    ::= { ciscoNtpMIBCompliances 2 }

ciscoNtpMIBComplianceRev2 MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
            "The compliance statement for Cisco agents which
            implement the Cisco NTP MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoNtpSysGroup,
                        ciscoNtpPeersGroupRev1
                    }

    GROUP           ciscoNtpFilterGroup
    DESCRIPTION
            "This group is required only if the
            clock-filer algorithms defined in RFC-1305,
            Section 4 are implemented by the agent."

    GROUP           ciscoNtpPeerExtGroup
    DESCRIPTION
            "This group is mandatory for agents that
            support extended NTP configuration."
    ::= { ciscoNtpMIBCompliances 3 }

ciscoNtpMIBComplianceRev3 MODULE-COMPLIANCE
    STATUS          deprecated -- replaced by ciscoNtpMIBComplianceRev4
    DESCRIPTION
            "The compliance statement for Cisco agents which
            implement the Cisco NTP MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoNtpSysGroup,
                        ciscoNtpPeersGroupRev2
                    }

    GROUP           ciscoNtpFilterGroup
    DESCRIPTION
            "This group is required only if the
            clock-filer algorithms defined in RFC-1305,
            Section 4 are implemented by the agent."

    GROUP           ciscoNtpPeerExtGroup
    DESCRIPTION
            "This group is mandatory for agents that
            support extended NTP configuration."

    ::= { ciscoNtpMIBCompliances 4 }

ciscoNtpMIBComplianceRev4 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
            "The compliance statement for Cisco agents which
            implement the Cisco NTP MIB."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoNtpSysGroup,
                        ciscoNtpPeersGroupRev2
                    }

    GROUP           ciscoNtpFilterGroup
    DESCRIPTION
            "This group is required only if the
            clock-filer algorithms defined in RFC-1305,
            Section 4 are implemented by the agent."

    GROUP           ciscoNtpPeerExtGroup
    DESCRIPTION
            "This group is mandatory for agents that
            support extended NTP configuration."

    GROUP           ciscoNtpSysExtGroup
    DESCRIPTION
            "This group is mandatory for agents that
            support extended NTP system variables."

    GROUP           ciscoNtpSrvNotifGroup
    DESCRIPTION
            "This group is mandatory for agents that
            support NTP server notifications."
    ::= { ciscoNtpMIBCompliances 5 }

-- Units of Conformance:
ciscoNtpSysGroup OBJECT-GROUP
    OBJECTS         {
                        cntpSysLeap,
                        cntpSysStratum,
                        cntpSysPrecision,
                        cntpSysRootDelay,
                        cntpSysRootDispersion,
                        cntpSysRefId,
                        cntpSysRefTime,
                        cntpSysPoll,
                        cntpSysPeer,
                        cntpSysClock
                    }
    STATUS          current
    DESCRIPTION     "The NTP system variables."
    ::= { ciscoNtpMIBGroups 1 }

ciscoNtpPeersGroup OBJECT-GROUP
    OBJECTS         {
                        cntpPeersConfigured,
                        cntpPeersPeerAddress,
                        cntpPeersPeerPort,
                        cntpPeersHostAddress,
                        cntpPeersHostPort,
                        cntpPeersLeap,
                        cntpPeersMode,
                        cntpPeersStratum,
                        cntpPeersPeerPoll,
                        cntpPeersHostPoll,
                        cntpPeersPrecision,
                        cntpPeersRootDelay,
                        cntpPeersRootDispersion,
                        cntpPeersRefId,
                        cntpPeersRefTime,
                        cntpPeersOrgTime,
                        cntpPeersReceiveTime,
                        cntpPeersTransmitTime,
                        cntpPeersUpdateTime,
                        cntpPeersReach,
                        cntpPeersTimer,
                        cntpPeersOffset,
                        cntpPeersDelay,
                        cntpPeersDispersion,
                        cntpPeersFilterValidEntries,
                        cntpPeersEntryStatus
                    }
    STATUS          deprecated
    DESCRIPTION     "The NTP peer variables."
    ::= { ciscoNtpMIBGroups 2 }

ciscoNtpFilterGroup OBJECT-GROUP
    OBJECTS         {
                        cntpFilterPeersOffset,
                        cntpFilterPeersDelay,
                        cntpFilterPeersDispersion
                    }
    STATUS          current
    DESCRIPTION     "The NTP clock-filter variables."
    ::= { ciscoNtpMIBGroups 3 }

ciscoNtpPeersGroupRev1 OBJECT-GROUP
    OBJECTS         {
                        cntpPeersConfigured,
                        cntpPeersPeerAddress,
                        cntpPeersPeerPort,
                        cntpPeersHostAddress,
                        cntpPeersHostPort,
                        cntpPeersLeap,
                        cntpPeersMode,
                        cntpPeersStratum,
                        cntpPeersPeerPoll,
                        cntpPeersHostPoll,
                        cntpPeersPrecision,
                        cntpPeersRootDelay,
                        cntpPeersRootDispersion,
                        cntpPeersRefId,
                        cntpPeersRefTime,
                        cntpPeersOrgTime,
                        cntpPeersReceiveTime,
                        cntpPeersTransmitTime,
                        cntpPeersUpdateTimeRev1,
                        cntpPeersReach,
                        cntpPeersTimer,
                        cntpPeersOffset,
                        cntpPeersDelay,
                        cntpPeersDispersion,
                        cntpPeersFilterValidEntries,
                        cntpPeersEntryStatus
                    }
    STATUS          deprecated
    DESCRIPTION     "The NTP peer variables."
    ::= { ciscoNtpMIBGroups 4 }

ciscoNtpPeerExtGroup OBJECT-GROUP
    OBJECTS         { cntpPeersPrefPeer }
    STATUS          current
    DESCRIPTION     "The extended set of NTP peer variable(s)."
    ::= { ciscoNtpMIBGroups 5 }

ciscoNtpPeersGroupRev2 OBJECT-GROUP
    OBJECTS         {
                        cntpPeersConfigured,
                        cntpPeersPeerAddress,
                        cntpPeersPeerPort,
                        cntpPeersHostAddress,
                        cntpPeersHostPort,
                        cntpPeersLeap,
                        cntpPeersMode,
                        cntpPeersStratum,
                        cntpPeersPeerPoll,
                        cntpPeersHostPoll,
                        cntpPeersPrecision,
                        cntpPeersRootDelay,
                        cntpPeersRootDispersion,
                        cntpPeersRefId,
                        cntpPeersRefTime,
                        cntpPeersOrgTime,
                        cntpPeersReceiveTime,
                        cntpPeersTransmitTime,
                        cntpPeersUpdateTimeRev1,
                        cntpPeersReach,
                        cntpPeersTimer,
                        cntpPeersOffset,
                        cntpPeersDelay,
                        cntpPeersDispersion,
                        cntpPeersFilterValidEntries,
                        cntpPeersEntryStatus,
                        cntpPeersPeerName,
                        cntpPeersPeerType
                    }
    STATUS          current
    DESCRIPTION     "The NTP peer variables."
    ::= { ciscoNtpMIBGroups 6 }

ciscoNtpSysExtGroup OBJECT-GROUP
    OBJECTS         { cntpSysSrvStatus }
    STATUS          current
    DESCRIPTION     "The extended set of NTP system variable(s)."
    ::= { ciscoNtpMIBGroups 7 }

ciscoNtpSrvNotifGroup NOTIFICATION-GROUP
   NOTIFICATIONS    {
                        ciscoNtpSrvStatusChange,
                        ciscoNtpHighPriorityConnFailure,
                        ciscoNtpHighPriorityConnRestore,
                        ciscoNtpGeneralConnFailure,
                        ciscoNtpGeneralConnRestore
                    }
    STATUS          current
    DESCRIPTION
            "The collection of notifications for the NTP Server."
    ::= { ciscoNtpMIBGroups 8 }

END